/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.suarte.core.service;

import com.suarte.core.Company;
import com.suarte.core.Contact;
import com.suarte.core.Currency;
import com.suarte.core.DocumentStatus;
import com.suarte.core.Invoice;
import com.suarte.core.InvoicePayment;
import com.suarte.core.Payment;
import java.util.Date;
import org.appfuse.service.GenericManager;

import java.util.List;
/**
 * @date   Dec 20, 2010
 * @author Ggutierrez
 */
public interface InvoiceManager extends GenericManager<Invoice, Long> {
    List<Invoice> findByDescription(String description);
    void store(Invoice object);
    Invoice get(Long id);
    List<Invoice> findInvoices(Long id, Long quotationId, String description, Date date, Company company, Contact contact, DocumentStatus status, Date fromExpirationDate, Date toExpirationDate);
    List<Invoice> findPendingInvoices(Company company, Currency currency);
    List<InvoicePayment> findInvoiceByPayment(Payment payment);
}
